package xuecheng.tool.http;

import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;

import org.springframework.util.ObjectUtils;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 简单的 http 响应对象
 *
 * @author PengXueCheng
 * @version 1.0.0
 *
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SimpleEvent {

    /**
     * 响应状态码
     */
    protected Integer responseStatus;
    /**
     * 响应体字节输入流
     */
    protected InputStream byteStream;
    /**
     * 响应体字符输入流
     */
    protected Reader charStream;
    /**
     * 失败事件的异常对象名称
     */
    protected Exception e;
    /**
     * 响应体字符串
     */
    protected String string;
    /**
     * 耗时
     */
    protected Double consumeTime;
    /**
     * 请求curl
     */
    protected String curl;

    /**
     * 是否超时
     *
     * @return 超时则为 true, 否则为 false
     */
    public boolean getOvertime() {
        boolean overtime;
        if (ObjectUtils.isEmpty(e)) {
            return false;
        }
        // e是不是IOException的子类或者子接口, 如果是则判定为超时
        overtime = IOException.class.isAssignableFrom(e.getClass());
        return overtime;
    }

}
